package com.party.core.service.wechatPlatform.impl;

import com.google.common.base.Strings;
import com.party.common.paging.Page;
import com.party.core.dao.read.wechatPlatform.WechatOpenPlatformReadDao;
import com.party.core.dao.write.wechatPlatform.WechatOpenPlatformWriteDao;
import com.party.core.model.BaseModel;
import com.party.core.model.wechatPlatform.WechatOpenPlatform;
import com.party.core.service.wechatPlatform.IWechatOpenPlatformService;
import com.sun.istack.NotNull;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.collections.map.HashedMap;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.Collections;
import java.util.Date;
import java.util.List;
import java.util.Set;

/**
 * @Author: Administrator.
 * @Description: 微信开放平台
 * @Date:Created in 2017/8/26 0026 上午 9:35.
 */
@Service
public class WechatOpenPlatformService implements IWechatOpenPlatformService {

    @Autowired
    private WechatOpenPlatformReadDao wechatOpenPlatformReadDao;
    @Autowired
    private WechatOpenPlatformWriteDao wechatOpenPlatformWriteDao;

    /**
     * 微信授权信息插入
     *
     * @param wechatOpenPlatform 微信授权信息
     * @return 插入结果（true/false）
     */
    @Override
    public String insert(WechatOpenPlatform wechatOpenPlatform) {
        BaseModel.preInsert(wechatOpenPlatform);
        boolean result = wechatOpenPlatformWriteDao.insert(wechatOpenPlatform);
        if (result) {
            return wechatOpenPlatform.getId();
        }
        return null;
    }


    /**
     * 微信授权信息更新
     *
     * @param wechatOpenPlatform 微信授权信息
     * @return 更新结果（true/false）
     */
    @Override
    public boolean update(WechatOpenPlatform wechatOpenPlatform) {
        wechatOpenPlatform.setUpdateDate(new Date());
        return wechatOpenPlatformWriteDao.update(wechatOpenPlatform);
    }


    /**
     * 微信授权信息逻辑删除
     *
     * @param id 实体主键
     * @return 删除结果（true/false）
     */
    @Override
    public boolean deleteLogic(@NotNull String id) {

        if (Strings.isNullOrEmpty(id)) {
            return false;
        }
        return wechatOpenPlatformWriteDao.deleteLogic(id);
    }


    /**
     * 微信授权信息物理删除
     *
     * @param id 实体主键
     * @return 删除结果（true/false）
     */
    @Override
    public boolean delete(@NotNull String id) {

        if (Strings.isNullOrEmpty(id)) {
            return false;
        }
        return wechatOpenPlatformWriteDao.delete(id);
    }


    /**
     * 微信授权信息逻辑批量删除
     *
     * @param ids 主键集合
     * @return 删除结果（true/false）
     */
    @Override
    public boolean batchDeleteLogic(@NotNull Set<String> ids) {

        if (CollectionUtils.isEmpty(ids)) {
            return false;
        }
        return wechatOpenPlatformWriteDao.batchDeleteLogic(ids);
    }

    /**
     * 微信授权信息物理逻辑删除
     *
     * @param ids 主键集合
     * @return 删除结果（true/false）
     */
    @Override
    public boolean batchDelete(@NotNull Set<String> ids) {
        if (CollectionUtils.isEmpty(ids)) {
            return false;
        }
        return wechatOpenPlatformWriteDao.batchDelete(ids);
    }


    /**
     * 根据主键获取微信授权信息
     *
     * @param id 主键
     * @return 微信授权信息
     */
    @Override
    public WechatOpenPlatform get(String id) {
        return wechatOpenPlatformReadDao.get(id);
    }


    /**
     * 获取微信开放平台
     * @return 微信开放平台
     */
    @Override
    public WechatOpenPlatform get() {
        List<WechatOpenPlatform> list = this.list(new WechatOpenPlatform());
        if (!CollectionUtils.isEmpty(list)){
            return list.get(0);
        }
        return null;
    }

    /**
     * 分页查询微信授权信息
     *
     * @param wechatOpenPlatform 微信授权信息
     * @param page               分页信息
     * @return 微信授权信息列表
     */
    @Override
    public List<WechatOpenPlatform> listPage(WechatOpenPlatform wechatOpenPlatform, Page page) {
        return wechatOpenPlatformReadDao.listPage(wechatOpenPlatform, page);
    }

    /**
     * 查询所有微信授权信息
     *
     * @param wechatOpenPlatform
     * @return 微信授权信息列表
     */
    @Override
    public List<WechatOpenPlatform> list(WechatOpenPlatform wechatOpenPlatform) {
        return wechatOpenPlatformReadDao.listPage(wechatOpenPlatform, null);
    }

    /**
     * 批量查询微信授权信息
     *
     * @param ids                主键集合
     * @param wechatOpenPlatform
     * @param page               分页信息
     * @return 微信授权信息列表
     */
    @Override
    public List<WechatOpenPlatform> batchList(@NotNull Set<String> ids, WechatOpenPlatform wechatOpenPlatform, Page page) {
        if (CollectionUtils.isEmpty(ids)) {
            return Collections.EMPTY_LIST;
        }
        return wechatOpenPlatformReadDao.batchList(ids, new HashedMap(), page);
    }
}
